/**************************************************************************************
*
*	Copyright (C) 2009 - 2012 Brent Andrew O. Chua - See LICENSE.txt for more info.
*		
*	Filename	-	RenderEntryBindParameters.h
*
*	Description -	Binds parameters. This is used to have a finer control on adding
*					extra parameters used by other systems such as the render path.
*
*	Comments	-	
*
*	Modification History:
*			Name			   Date					Description
*			MrCodeSushi	-	01/15/2013	-	Creation of this file
**************************************************************************************/
#ifndef _PSX_RENDER_ENTRY_BIND_PARAMETERS_H_
#define _PSX_RENDER_ENTRY_BIND_PARAMETERS_H_

#include "PulseSTD.h"
#include "RenderEntry.h"
#include "ParameterContainer.h"
#include "Array.h"

namespace Pulse
{
	class RenderEntryBindParameters: public RenderEntry
	{
	public:

		RenderEntryBindParameters( void ) {  }

		virtual ~RenderEntryBindParameters( void ) { }

		IParameterBinder * AddParameter( IParameter *pParameter );

		IParameterBinder * FindParameterBinder( IParameter *pParameter );

		void ClearParameters( void ) { m_paramBinders.ClearParameters(); }

		//virtual void PreExecute( GraphicsPipeline *pPipeline ) { }

		virtual void Execute( GraphicsPipeline *pPipeline );

		//virtual void PostExecute( GraphicsPipeline *pPipeline ) { }

	private:

		ParameterContainer m_paramBinders;

	};
}

#endif /* _PSX_RENDER_ENTRY_BIND_PARAMETERS_H_ */